# CyberFlood 配置文件

class Config:
    """
    CyberFlood 项目配置类
    """
    
    # 输入文件配置
    INPUT_PDF_FILE = 'report.pdf'          # PDF报告文件名
    INPUT_PCAP_FILE = 'cyberflood.pcap'    # PCAP数据包文件名
    
    # 输出文件配置
    OUTPUT_TXT_FILE = 'report.txt'         # 文本输出文件
    OUTPUT_JSON_1 = 'output.json'          # 原始JSON输出
    OUTPUT_JSON_2 = 'output_2.json'        # 按IP分组JSON
    OUTPUT_JSON_3 = 'output_3.json'        # 最终处理JSON
    
    # 输出目录配置
    SIP_PCAPS_DIR = 'sip_pcaps'           # 按源IP分割的PCAP文件目录
    CVE_PCAPS_DIR = 'cve_pcaps'           # 按CVE分类的PCAP文件目录
    
    # 数据处理配置
    MAX_TIME_DIFF = 15                     # 会话分割时间间隔（秒）
    IP_RANGE_START = 2                     # IP范围起始值
    IP_RANGE_END = 255                     # IP范围结束值
    IP_PREFIX = '11.1.1'                  # IP地址前缀
    
    # 日志配置
    LOG_LEVEL = 'INFO'                     # 日志级别: DEBUG, INFO, WARNING, ERROR
    LOG_FORMAT = '<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>'
    
    # 性能配置
    BATCH_SIZE = 50                        # 批处理大小
    MAX_MEMORY_MB = 2048                   # 最大内存使用限制（MB）
    
    # 文件处理配置
    ENCODING = 'utf-8'                     # 文件编码
    JSON_INDENT = 4                        # JSON缩进空格数
    
    # 错误处理配置
    RETRY_TIMES = 3                        # 失败重试次数
    IGNORE_ERRORS = False                  # 是否忽略非致命错误
    
    # 高级配置
    USE_MULTIPROCESSING = False            # 是否启用多进程处理
    PROCESS_COUNT = 4                      # 进程数量
    CLEANUP_TEMP_FILES = True              # 是否清理临时文件

class DevelopmentConfig(Config):
    """
    开发环境配置
    """
    LOG_LEVEL = 'DEBUG'
    IGNORE_ERRORS = True
    IP_RANGE_START = 2
    IP_RANGE_END = 10                      # 开发时处理较少IP

class ProductionConfig(Config):
    """
    生产环境配置
    """
    LOG_LEVEL = 'INFO'
    USE_MULTIPROCESSING = True
    PROCESS_COUNT = 8
    MAX_MEMORY_MB = 4096

class TestConfig(Config):
    """
    测试环境配置
    """
    INPUT_PDF_FILE = 'test_report.pdf'
    INPUT_PCAP_FILE = 'test_capture.pcap'
    IP_RANGE_START = 2
    IP_RANGE_END = 5
    LOG_LEVEL = 'DEBUG'

# 环境配置映射
config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'testing': TestConfig,
    'default': Config
}

def get_config(env='default'):
    """
    获取指定环境的配置
    """
    return config.get(env, Config) 